﻿using System;
using System.Data.SqlClient;

public partial class Forma_8 : System.Web.UI.Page
{
    private String SessionID;
    private Boolean FolioExists;
    private Int32 Folio;

    private void Page_Load(object sender, System.EventArgs e)
    {
        SessionValidation();
        
        // Carga los datos de qué semestre aplicará la Beca
        whatSemester();

        // Se verifíca si existe un Folio actual para cargar los datos
        // que han sido previamente guardados
        DatabaseConnection dbCon = new DatabaseConnection();
        FolioExists = dbCon.FolioExistsForCurrentUser(ref Folio, SessionID);
        dbCon.CloseConnection();
        if (FolioExists && !Page.IsPostBack)
        {
            LoadFormWithPastData();
        }
        else if (!FolioExists)
        {
            Response.Redirect("~/Alumno/");
        }
    }


    // Carga la información previamente guardada en la solicitud
    private void LoadFormWithPastData()
    {
        DatabaseConnection dbCon = new DatabaseConnection();
        String query = "SELECT * FROM Solicitud WHERE Solicitud.Folio =  " + Folio +
                       " ORDER BY Solicitud.Folio DESC";
        SqlDataReader formData = dbCon.ExecuteSelect(query);

        if (formData.Read())
        {
            Motivo_Destino.Text = formData["Motivo_Destino"].ToString();

            String Motivo_AplicarSemestreString = formData["Motivo_AplicarSemestre"].ToString();
            if (Motivo_AplicarSemestreString.Contains("Enero-Mayo"))
            {
                input_r2_1.Checked = true;
            }
            else if (Motivo_AplicarSemestreString.Contains("Agosto-Diciembre"))
            {
                input_r2_2.Checked = true;
            }

            String Motivo_BecaAnteriorString = formData["Motivo_BecaAnterior"].ToString();
            if (Motivo_BecaAnteriorString.Contains("S"))
            {
                Motivo_BecaAnterior.SelectedIndex = 0;
            }
            else if (Motivo_BecaAnteriorString.Contains("N"))
            {
                Motivo_BecaAnterior.SelectedIndex = 1;
            }

            Motivo_SemestresAnteriores.Text = formData["Motivo_SemestresAnteriores"].ToString();

            String razon = formData["Motivo_RazonRenovacion"].ToString();
            switch (razon)
            {
                case "": break;
                case "La situación económica se agravó":
                    Motivo_RazonRenovacion.SelectedIndex = 0;
                    break;
                case "La situación económica se mantiene igual":
                    Motivo_RazonRenovacion.SelectedIndex = 1;
                    break;
                case "La situación económica mejoró pero surgieron nuevas erogaciones":
                    Motivo_RazonRenovacion.SelectedIndex = 2;
                    break;
                case "La situación económica mejoró pero no es suficiente":
                    Motivo_RazonRenovacion.SelectedIndex = 3;
                    break;
                default:
                    Motivo_RazonRenovacion.SelectedIndex = 4;
                    RazonRenovacion_OtraTextBox.Text = razon;
                    break;
            }

            razon = formData["Motivo_RazonNoSolicitud"].ToString();
            switch (razon)
            {
                case "": break;
                case "No tenía necesidad apremiante":
                    Motivo_RazonNoSolicitud.SelectedIndex = 0;
                    break;
                case "No sabía que existía":
                    Motivo_RazonNoSolicitud.SelectedIndex = 1;
                    break;
                default:
                    Motivo_RazonNoSolicitud.SelectedIndex = 2;
                    RazonNoSolicitud_OtraTextBox.Text = razon;
                    break;
            }

            Motivo_DesdeCuandoNecesidad.Text = formData["Motivo_DesdeCuandoNecesidad"].ToString();
            Motivo_Motivo.Text = formData["Motivo_Motivo"].ToString(); ;
        }
        dbCon.CloseConnection();
    }

    // Calcula cuando podrá el alumno aplicar para la beca
    private void whatSemester()
    {
        DateTime currentDate = DateTime.Now;
        Int16 year = Int16.Parse(currentDate.Year.ToString());
        Int16 month = Int16.Parse(currentDate.Month.ToString());

        if (month > 6 && month < 12)
        {
            input_r2_1.Text = "Enero-Mayo " + (year + 1).ToString();
            input_r2_2.Text = "Agosto-Diciembre " + (year + 1).ToString();
            
        }
        else if (month > 0 && month < 7)
        {
            input_r2_1.Text = "Enero-Mayo " + (year + 1).ToString(); ;
            input_r2_2.Text = "Agosto-Diciembre " + (year).ToString();
        }
    }

    // Obtiene el valor para la pregunta de qué semestre aplicar
    private String GetDatos_MotivoAplicarSemestre()
    {
        if (input_r2_1.Checked)
            return input_r2_1.Text;
        if (input_r2_2.Checked)
            return input_r2_2.Text;
        return String.Empty;
    }


    // Obtiene el valor para Motivo_RazonRenovacion
    private String GetDatos_MotivoRazonRenovacion()
    {
        if (Motivo_RazonRenovacion.SelectedIndex != 4)
        {
            return Motivo_RazonRenovacion.SelectedValue;
        }
        if (Motivo_RazonRenovacion.SelectedIndex == 4)
        {
            return RazonRenovacion_OtraTextBox.Text;
        }
        return String.Empty;
    }


    // Obtiene el valor para Motivo_RazonNoSolicitud
    private String GetDatos_MotivoRazonNoSolicitud()
    {
        if (Motivo_RazonNoSolicitud.SelectedIndex != 2)
        {
            return Motivo_RazonNoSolicitud.SelectedValue;
        }
        if (Motivo_RazonNoSolicitud.SelectedIndex == 2)
        {
            return RazonNoSolicitud_OtraTextBox.Text;
        }
        return String.Empty;
    }


    // Inserta / Actualiza la información de la forma
    protected void InsertData(object sender, EventArgs e)
    {
        DatabaseConnection dbCon = new DatabaseConnection();
        String myCommand;
        if (FolioExists)
        {
            //Update query goes here
            myCommand = "UPDATE \"Solicitud\" " +
                      "SET Motivo_Destino = '" + Motivo_Destino.Text + "', " +
                      "Solicitud_Fecha = '" + DateTime.Today.Year + "-" + DateTime.Today.Month + "-" + DateTime.Today.Day + "', " +
                      "Motivo_AplicarSemestre = '" + GetDatos_MotivoAplicarSemestre() + "', " +
                      "Motivo_BecaAnterior = '" + Motivo_BecaAnterior.SelectedValue + "', " +
                      "Motivo_SemestresAnteriores = '" + Motivo_SemestresAnteriores.Text + "', " +
                      "Motivo_RazonRenovacion = '" + GetDatos_MotivoRazonRenovacion() + "', " +
                      "Motivo_RazonNoSolicitud = '" + GetDatos_MotivoRazonNoSolicitud() + "', " +
                      "Motivo_DesdeCuandoNecesidad = '" + Motivo_DesdeCuandoNecesidad.Text + "', " +
                      "Motivo_Motivo = '" + Motivo_Motivo.Text + "' " +
                      "WHERE Solicitud.Folio = " + Folio.ToString() + " " +
                      "AND Solicitud.Matricula = '" + SessionID + "'";
        }
        else //No folio exists so INSERT query goes here
        {
            myCommand = "INSERT \"Solicitud\" (Motivo_Destino, Solicitud_Fecha, Motivo_AplicarSemestre, Motivo_BecaAnterior, " +
                        "Motivo_SemestresAnteriores, Motivo_RazonRenovacion, Motivo_RazonNoSolicitud, Motivo_DesdeCuandoNecesidad, Motivo_Motivo, Matricula) " +
                        "VALUES (" + Motivo_Destino.Text + "', '" +
                        DateTime.Today.Year + "-" + DateTime.Today.Month + "-" + DateTime.Today.Day + "', '" +
                        GetDatos_MotivoAplicarSemestre() + "', '" +
                        Motivo_BecaAnterior.SelectedValue + "', '" +
                        Motivo_SemestresAnteriores.Text + "', '" +
                        GetDatos_MotivoRazonRenovacion() + "', '" +
                        GetDatos_MotivoRazonNoSolicitud() + "', '" +
                        Motivo_DesdeCuandoNecesidad.Text + "', '" +
                        Motivo_Motivo.Text + "', '" +
                        SessionID + "')";
        }
        int rowsAffected = dbCon.ExecuteNonQuery(myCommand);
        dbCon.CloseConnection();

        Response.Redirect("~/Forma/Forma9.aspx");
    }
    
   /* Valida que la sesión del usuario sea la correcta para mostrar
    * el contenido de esta página
    */ 
    protected void SessionValidation()
    {
        SessionID = (String)Session["SessionID"];
        String UserType = (String)Session["UserType"];

        if (String.IsNullOrEmpty(SessionID) || String.IsNullOrEmpty(UserType))
        {
            Session.RemoveAll();
            Response.Redirect("~/Default.aspx");
        }
        else
        {
            if (!String.Equals(UserType, "Alumnos"))
            {
                Session.RemoveAll();
                Response.Redirect("~/Default.aspx");
            }
        }
    }
}

